#ifndef CROSSOVERJOB_H_
#define CROSSOVERJOB_H_

#include "../Job.h"
#include "../../Solution/Solution.h"

/** Base class for all crossover jobs.  Any crossover jobs that are implemented
 * need to inherit from this class and implement its functionality.
 */
class CrossoverJob : public Job
{
    public:
        CrossoverJob(Solution *newParent1, Solution *newParent2); /**< The crossover job constructo requires two parents to cross   */
        Solution *getChild1();                                    /**< Returns the first child resulting from the crossover         */
        Solution *getChild2();                                    /**< Returns the second child resulting from the crossover        */
        Solution *getParent1();                                   /**< Returns the first parent that was used to perform the cross  */ 
        Solution *getParent2();                                   /**< Returns the second parent that was used to perform the cross */
        void setChild1(Solution *newChild);                       /**< Sets the first child                                         */
        void setChild2(Solution *newChild);                       /**< Sets the second child                                        */
   
    private:
        Solution *parent1;
        Solution *parent2;
        Solution *child1;
        Solution *child2;
};

#endif /*CROSSOVERJOB_H_*/
